package arithmetic;

import java.lang.*;
import java.util.*;

/**
 * 冒泡排序
 * 时间复杂度n的平方
 */
public class bubblesort {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);//输入流
        int number, i;//定义数组大小
        System.out.println("请输入排序数量:");//提示输入要排序的数据
        number = in.nextInt();//输入排序数量
        int[] arr = new int[number];//定义数组
        //for循环遍历输入数组
        System.out.println("请输入数组数据 ：");
        for (i = 0; i < arr.length; i++) {
            arr[i] = in.nextInt();
        }
        int length = arr.length;//获得数组长度
        int j, k;
        boolean flag = false;
        //双层for循环外层控制趟数，内层控制交换的次数和交换数据
        for (i = 0; i < length - 1; i++) {

            for (k = 0; k < length - i - 1; k++) {
                if (arr[k] > arr[k + 1]) {
                    //设置中间存储遍历temp存储交换前的数组数据
                    int temp = arr[k];
                    //把较大的值放到数组的后面
                    arr[k] = arr[k + 1];
                    //小的值放到前面
                    arr[k + 1] = temp;
                    flag = true;
                }
            }
            System.out.println(Arrays.toString(arr));

            if (!flag) {
                break;
            }
        }
        //输出排序后的数据
        for (int element : arr)
            System.out.printf(element + " ");
    }
}